import {error} from './error.js';//报错信息
import {unwanted} from './isEqually.js'//是否需要token进行请求
let token = '';
let url = process.uniEnv.BASE_API;//环境地址
let numTime;//发送请求的次数，防止多次点击按钮出现断续加载框（防抖）
function request (options = {}) {
	let header = {}
	token = uni.getStorageSync('token');
	if(unwanted(options.url)){//请求登录、注册、忘记密码不需要token
		header = null
	}else{
		header['Authorization'] = "Bearer"+ " "+token
	}
	// 正在请求时显示加载
	uni.showLoading({
		title: '加载中...',
		mask: true
	});
	numTime = true
	if(numTime){
		numTime = false
		return new Promise((resolve, reject) => {
			uni.request({
				url: url + options.url,//请求链接
				method: options.method,//请求方式
				data: options.data,//请求参数
				header: header,//请求头
				timeout: 3000,//请求超时时间(ms)
				success(res) {//请求成功回调
					if(res.statusCode == 200){//网络请求握手成功
						resolve(res.data)
						if(res.data.code == 401){
							uni.removeStorageSync('token')
							if(!token){//没有登录的状态下，弹出
								uni.redirectTo({
									url: '/pages/login/login'
								})
							}else{//有登录状态下，token过期，弹出
								// uni.showToast({
								// 	title: '登录已过期，请重新登录',
								// 	icon: 'none'
								// })
								uni.redirectTo({
									url: '/pages/login/login'
								})
							}
						}
					}else{//网络请求握手失败
						uni.showToast({
							title: '请求超时，请稍后再试',
							icon: 'none'
						})
					}
				},
				fail(err) {//请求失败回调
					reject(err)
				},
				complete() {//接口请求回调
					numTime = true
					if(numTime){
						// 关闭弹窗
						uni.hideLoading()
					}
				}
			})
		})
	}
}
export default request